抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

ssh的两种登陆方式介绍

(1) 口令验证登录

(2) 密钥验证登录

准备

在centos中准备一个文件夹给工程使用,准备采用密钥验证登录。因为 hexo 只支持 ssh 登录的方式。

1
/usr/local/my-blog

现在的主要困难是 CentOS7 新建用户与SSH登陆设置,给虚拟弄个账号,然后主机可以用 ssh 连接过去。

在主机新建用户

新建和删除用户

1
2
3
4
5
adduser hexous           //添加一个新用户,名字叫 hexous
passwd hexous //设置用户密码
gpasswd -a hexous wheel //给予sudo权限, 当权限不够时,可以用sudo
lid -g hexous //查询所有带sudo权限的用户
userdel -r hexous //删除用户和相应的目录

更进一步,这下面的我没有尝试过,但感觉很有意思。参考CentOS7 新建用户与SSH登陆设置

1
2
3
PermitRootLogin no //阻止root用户登陆 
AllowUsers sirius //允许制定用户使用SSH登陆
PasswordAuthentication no //阻止用户密码SSH登陆 !!! 如果设置no,证书还没配置对,你就登陆不上了

在客户机新建公私钥

1
2
3
4
5
6
ssh-keygen -t rsa -C "anarckk@gmail.com"

-t = The type of the key to generate
密钥的类型
-C = comment to identify the key
用于识别这个密钥的注释

然后,在 c:\Users\zzanar.ssh\ 路径下可以看到新建的 id_rsa 和 id_rsa.pub

再然后,像这样修改 ~.ssh 目录下的 .config 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# vm-centos7-hexous
Host 192.168.216.129
HostName 192.168.216.129
User hexous
IdentityFile C:/Users/zzanar/.ssh/id_rsa

# github
Host github.com
HostName github.com
User git
IdentityFile C:/Users/zzanar/.ssh/id_github

# 好像 gitee 可以只用一个 key 就可以管理所有的库了。挺方便的
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
User git
IdentityFile C:/Users/zzanar/.ssh/id_gitee

这样,在客户机上就完成了新建公私钥。

将客户机加入到主机的许可之中

在 /home/hexous/.ssh/ 之中新建文件 authorized_keys,里面的内容是客户机的 id_rsa.pub 的内容,一台客户机一行。


测试

可以用命令行测试一下

1
ssh hexous@192.168.216.129

我在这一步遇到命令行抛出一个问题,跟说我

1
2
3
The authenticity of host '192.168.216.129 (192.168.216.129)' can't be established.
ECDSA key fingerprint is SHA256:wU5gh5jxhjSB/uL23VzZQOMXQjZSO9fJ/WnyGkFB+W0.
Are you sure you want to continue connecting (yes/no)?

直接选择 yes 就好,然后就把信息加入到 know_hosts 文件中,下次就不会再问了。

没办法通过rsync进行部署了

做到这一步,发现,windows上没办法运行 rsync ,找了个windows版本的rsync装上,还是发现部署的时候程序找的是 /home/zzanar/.ssh 这个路径的地址,不知道怎么改,感觉 hexo 的部署就是设计与 linux 环境下的。

所以,研究了下,只能另找办法,例如在 /usr/local/my-blog 下建一个 git 库,可以在 windows 里直接克隆出来。地址如下面这么写。

1
git clone hexous@192.168.216.129:/usr/local/my-blog

但是,无法提交啊

最后

我决定了,只有一招了,使用xftp手动拷贝public里的文件到centos里。等以后找到更好的方法再说了。

安装 hexo-deployer-rsync

npm install hexo-deployer-rsync –save

修改配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
deploy:
type: rsync
host: <host>
user: <user>
root: <root>
port: [port]
delete: [true|false]
verbose: [true|false]
ignore_errors: [true|false]


参数 描述 默认值
host 远程主机的地址
user 使用者名称
root 远程主机的根目录
port 端口 22
delete 删除远程主机上的旧文件 true
verbose 显示调试信息 true
ignore_errors 忽略错误 false

使用 ftp 提交文件部署到服务器

修改自2019-11-9 19:58:30

1
2
3
4
5
6
7
8
9
10
11
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: ftpsync
host: 192.168.216.129
user: leo
pass: xxxx
remote: /my-blog/
port: 21
connections: 1
verbose: true

在服务器上安装 ftp ,然后就这么配就好,配置 ftp 的在最近一篇博客里

还是不行

使用 ftp 部署可以,但是不能用 hexo 内置的发布器。真是垃圾。

idea 编译部署功能

最后只能用这个了 Intellij IDEA同步代码至远程FTP服务器

参考来源

Linux密钥登录原理和ssh使用密钥实现免密码登陆

阿里云Centos7+Nginx+Window部署Hexo静态博客

评论